package controlleur;

import java.util.List;

import modele.CarteEvenement;
import modele.CaseMatiere;
import modele.Famille;
import modele.Joueur;
import modele.Niveau;
import modele.Theme;
import vue.VueConsole;

public class ControlleurConsole implements Controlleur {


	private VueConsole vueInfoPoly;
	private InfopolyFacade modelInfopoly;


	public ControlleurConsole(VueConsole vueInfo,InfopolyFacade modelInfopoly){
		this.vueInfoPoly = vueInfo;
		this.modelInfopoly = modelInfopoly;
	}

	public void mouvementJoueur(){
		int resultatDe1 = modelInfopoly.utiliserDe();
		int resultatDe2 = modelInfopoly.utiliserDe();
		
		modelInfopoly.infoTour(this);

		modelInfopoly.deplacementJoueur(resultatDe1, resultatDe2, this);
	}

	@Override
	public void donnerTourJeu(int compteNbTour) {
		vueInfoPoly.afficheTourEnCours(compteNbTour);
	}

	@Override
	public void donnerJoueurSuivant(String nomJoueur) {
		vueInfoPoly.afficheJoueurSuivant(nomJoueur);		
	}

	@Override
	public void donnerResultatDe(int resultatDe1, int resultatDe2) {
		vueInfoPoly.afficheResultatDe(resultatDe1, resultatDe2);

	}

	@Override
	public void donnerAFaitDouble() {
		vueInfoPoly.afficherAFaitDouble();
	}

	@Override
	public void donnerAPasFaitDouble() {
		vueInfoPoly.afficherAPasFaitDouble();
	}

	@Override
	public void sortirAnomalieSansDouble() {
		vueInfoPoly.afficherSortirAnomalieSansDouble();
	}

	@Override
	public String proposerEchange() {
		String choix = vueInfoPoly.afficheDemandeEchange();

		return choix;
	}

	@Override
	public void aucunEchangePossible() {
		vueInfoPoly.echangeImpossible();
	}

	@Override
	public int contrepartieEchange(List<CaseMatiere> listeMatierePossede) {
		int numMatiere = vueInfoPoly.afficherContrepartieEchange();
		return numMatiere;
	}

	@Override
	public int donneMatiereAdversaire(List<CaseMatiere> matieresAdversaires) {
		int numMatiere = vueInfoPoly.afficheListeMatieresAdversaires(matieresAdversaires);
		return numMatiere;
	}

	@Override
	public String confirmerEchange(Joueur joueur, CaseMatiere caseVoulu,
			CaseMatiere caseProposee) {

		String reponse = vueInfoPoly.afficherConfirmationEchange(joueur,caseVoulu,caseProposee);

		return reponse;
	}

	@Override
	public void donnerInformationJoueur(Joueur j) {
		vueInfoPoly.afficheInformationJoueur(j);
	}

	@Override
	public void donnerCarteEvenement(CarteEvenement carteEvenement) {
		vueInfoPoly.afficherCarteEvenement(carteEvenement);
	}

	@Override
	public void passeParCaseNouveauMois() {
		vueInfoPoly.afficherPassageNouveauMois();
	}

	@Override
	public void passeParPannePc() {
		vueInfoPoly.affichePannePc();
	}

	@Override
	public void passeParPanneEau() {
		vueInfoPoly.affichePanneEau();
	}

	@Override
	public void passeParFauteGrave() {
		vueInfoPoly.afficheFauteGrave();

	}

	@Override
	public String prendreConge() {
		String reponse = vueInfoPoly.afficheDemandeConge();
		return reponse;
	}

	@Override
	public void demandeCongeAcceptee() {
		vueInfoPoly.affichePerdreConge();
	}

	@Override
	public int deplacementConge() {
		int numCase = vueInfoPoly.afficheZoneDeplacement();
		return numCase;
	}

	@Override
	public void depasserQuota() {
		vueInfoPoly.afficheDepasserQuota();
	}

	@Override
	public void gainConge() {
		vueInfoPoly.afficheGainConge();
	}

	@Override
	public void allerEnAnomalie() {
		vueInfoPoly.messageAnomalie();
	}

	@Override
	public void donnerLoyerCase(CaseMatiere caseMatiere) {
		vueInfoPoly.afficheLoyerCase(caseMatiere);
	}

	@Override
	public String achatCaseLibre(CaseMatiere caseMatiere) {
		String choix = vueInfoPoly.messageAchatCaseLibre(caseMatiere);
		return choix;
	}

	@Override
	public void informerDeLachat() {
		vueInfoPoly.afficheAchatCaseLibre();
	}

	@Override
	public void achatAccepte(CaseMatiere caseMatiere) {
		vueInfoPoly.messageAchatAccepte(caseMatiere);
	}

	@Override
	public void achatRefuse() {
		vueInfoPoly.messageAchatRefuse();
	}

	@Override
	public void tenterAugmenterNiveau(CaseMatiere caseMatiere) {
		vueInfoPoly.messageAugmenterNiveau(caseMatiere);
	}

	@Override
	public void passerNiveauSuperieur(Famille theme,Niveau niveau) {
		vueInfoPoly.messageNiveauSuperieur(theme,niveau);
	}

	@Override
	public void echecPasserNiveau() {
		vueInfoPoly.messageEchecNiveau();
	}

	@Override
	public void donneThemeComplet(Famille theme) {
		vueInfoPoly.messageThemeComplet(theme);
	}

	@Override
	public void reussirMissionEntreprise() {
		vueInfoPoly.messageMissionReussie();
	}

	@Override
	public void echecMission() {
		vueInfoPoly.messageEchecMission();
	}

	@Override
	public void donnerMission(String question) {
		vueInfoPoly.afficheQuestionMission(question);
	}

	@Override
	public int donneReponsePossible(List<String> reponsesPossibles){
		int reponse = vueInfoPoly.afficheReponsePossible(reponsesPossibles);
		return reponse;
	}

	@Override
	public void echangeAccepte() {
		vueInfoPoly.messageEchangeAccepte();
	}

	@Override
	public void echangeRefuse() {
		vueInfoPoly.messageEchangeRefuse();
	}

	@Override
	public void donneListeMatieres(List<CaseMatiere> listeMatierePossede) {
		vueInfoPoly.afficheMatieres(listeMatierePossede);
	}

	@Override
	public void caseHorsListe() {
		vueInfoPoly.messageCaseHorsListe();
	}

	@Override
	public void perdreTheme(Theme theme) {
		vueInfoPoly.messagePerdreTheme(theme);
	}

	@Override
	public void quiAGagner(Joueur j) {
		vueInfoPoly.afficheAGagner(j);
	}

	@Override
	public void quiAPerdu(Joueur j) {
		vueInfoPoly.afficheAPerdu(j);
	}

	@Override
	public void donnerInventaire(Joueur joueur) {
		
		
	}

	

	











}
